import cv2 as cv
import numpy as np
import os


def closeimg():
    if cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')
    elif cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')
    elif cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')
    elif cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')
    elif cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')
    elif cv.waitKey(0) == 13:
        cv.destroyWindow('Picture Showing')

def version():
    print("-*-*-*-极客时间工作室 评分系统*-*-*-")
    print('Version:1.0.1Beta')




list_file = open('pictures/list.config')
list = list_file.readlines()
list_file.close()
username=int(input('输入8位评委编号：'))
time = 0
mark_sum=0.0
mark_avg=0.0
give_mark=open('mark/username.config','w')
give_mark.write(str(username))
for pic in list:
    pic = pic.rstrip()
    pic = pic.replace('\n', '')
    img = cv.imread("pictures/" + pic, cv.IMREAD_UNCHANGED)
    os.system('cls')
    img_size = img.shape
    print(img_size)
    img = cv.resize(img, (int(img_size[0] / 5), int(img_size[1] / 5)))

    os.system('cls')
    cv.imshow('Picture Showing', img)
    version()
    print("已阅数量：" + str(time))
    print('请保持大写锁定，按回车进入打分')
    print("当前图片：" + pic)
    closeimg()
    try:
        mark1 = float(input("请从图像分辨角度评分（满分10.00分）："))
    except ValueError:
        os.system('cls')
        print("请输入小数或整数")
        mark1 = float(input("请从图像分辨角度评分（满分10.00分）："))
    if mark1 > 10.0 or mark1 < 0.0:
        print('数字超出范围！')
        try:
            mark1 = float(input("请从图像分辨角度评分（满分10.00分）："))
        except ValueError:
            os.system('cls')
            print("请输入小数或整数")
            mark1 = float(input("请从图像分辨角度评分（满分10.00分）："))

    os.system('cls')
    cv.imshow('Picture Showing', img)
    version()
    print("已阅数量：" + str(time))
    print('请保持大写锁定，按回车进入打分')
    print("当前图片：" + pic)
    closeimg()
    try:
        mark2 = float(input("请从曝光对焦角度评分（满分10.00分）："))
    except ValueError:
        os.system('cls')
        print("请输入小数或整数")
        mark2 = float(input("请从曝光对焦角度评分（满分10.00分）："))
    if mark2 > 10.0 or mark2 < 0.0:
        print('数字超出范围！')
        try:
            mark2 = float(input("请从曝光对焦角度评分（满分10.00分）："))
        except ValueError:
            os.system('cls')
            print("请输入小数或整数")
            mark2 = float(input("请从曝光对焦角度评分（满分10.00分）："))

    os.system('cls')
    cv.imshow('Picture Showing', img)
    version()
    print("已阅数量：" + str(time))
    print('请保持大写锁定，按回车进入打分')
    print("当前图片：" + pic)
    closeimg()
    try:
        mark3 = float(input("请从摄影题材角度评分（满分10.00分）："))
    except ValueError:
        os.system('cls')
        print("请输入小数或整数")
        mark3 = float(input("请从摄影题材角度评分（满分10.00分）："))
    if mark3 > 10.0 or mark3 < 0.0:
        print('数字超出范围！')
        try:
            mark3 = float(input("请从摄影题材角度评分（满分10.00分）："))
        except ValueError:
            os.system('cls')
            print("请输入小数或整数")
            mark3 = float(input("请从摄影题材角度评分（满分10.00分）："))

    os.system('cls')
    cv.imshow('Picture Showing', img)
    version()
    print("已阅数量：" + str(time))
    print('请保持大写锁定，按回车进入打分')
    print("当前图片：" + pic)
    closeimg()
    try:
        mark4 = float(input("请从拍摄手法角度评分（满分10.00分）："))
    except ValueError:
        os.system('cls')
        print("请输入小数或整数")
        mark4 = float(input("请从拍摄手法角度评分（满分10.00分）："))
    if mark4 > 10.0 or mark4 < 0.0:
        print('数字超出范围！')
        try:
            mark4 = float(input("请从拍摄手法角度评分（满分10.00分）："))
        except ValueError:
            os.system('cls')
            print("请输入小数或整数")
            mark4 = float(input("请从拍摄手法角度评分（满分10.00分）："))

    os.system('cls')
    cv.imshow('Picture Showing', img)
    version()
    print("已阅数量：" + str(time))
    print('请保持大写锁定，按回车进入打分')
    print("当前图片：" + pic)
    closeimg()
    try:
        mark5 = float(input("请从整体观感角度评分（满分10.00分）："))
    except ValueError:
        os.system('cls')
        print("请输入小数或整数")
        mark5 = float(input("请从整体观感角度评分（满分10.00分）："))
    if mark5 > 10.0 or mark5 < 0.0:
        print('数字超出范围！')
        try:
            mark5 = float(input("请从整体观感角度评分（满分10.00分）："))
        except ValueError:
            os.system('cls')
            print("请输入小数或整数")
            mark5 = float(input("请从整体观感角度评分（满分10.00分）："))

    time = time + 1
    mark_last = (mark1 + mark2 + mark3 + mark4 + mark5) / 5
    mark_sum=mark_sum+mark_last
    mark_avg=mark_sum/time
    os.system('cls')
    print('最终评分（满分10.00分）：', mark_last)
    print("阅卷平均给分",mark_avg)
    print('按任意键确认保存评分，跳转到下一张图片')
    os.system('pause')
    marks = 'mark/' + pic + '.mark'
    mark_file = open(marks, mode='w')
    mark_file.write(str(mark_last))

    mark_file.close()

os.system('cls')
version()
give_mark.close()
print('评分完毕！评卷数量：' + str(time))
